#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

__author__ = 'Michael Liao'

import sys

def test():
    args = sys.argv
    if len(args)==1:
            print('Hello, world!')
    elif len(args)==2:
        print('Hello, %s!' % args[1])
    else:
        print('Too many arguments!')

def _private_1(name):
    return 'Hello, %s' % name

def _private_2(name):
    return 'Hi, %s' % name

def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)

#测试本模块----当通过python命令行直接运行本文件时，__name__就是main，其他人通过import调用本文件时，__name__就不是main了
if __name__=='__main__':
    test()

#============================================================================================
#===========================上面的代码是定义了一个模块，给别人用=========================================
#============================================================================================
'''
第4行：模块注释（规定模块的第一个字符串作为模块注释）  通过__doc__能访问到
第6行：作者

关于命令行参数：sys.argv
运行python3 hello.py Michael获得的sys.argv就是['hello.py', 'Michael]

作用域：
==下划线开头的是私有的，别人看不到

安装第三方模块：
pip install Pillow
这里pillow就是第三方模块的名字

引用第三方模块：
from lesson6 import greeting
print(greeting('ddddd'))


关于调试
logging

关于单元测试


关于文档测试


'''

#============================================================================================
#===========================内置和第三方模块=========================================
#============================================================================================
print('\n=========================datetime库================')
print('\n====字符串转为datetime对象：相当于java的sdf.parse()')
from datetime import datetime
cday = datetime.strptime('2015-6-1 18:19:59', '%Y-%m-%d %H:%M:%S')
print(type(cday))
print(cday)
'''
字符串'%Y-%m-%d %H:%M:%S'规定了日期和时间部分的格式
注意转换后的datetime是没有时区信息的。
'''

print('\n====datetime的格式化输出：相当于Java的sdf.format()')
now = datetime.now()
print(now.strftime('%a, %b %d %H:%M'))
#所有可用格式参考：https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior

print('\n====日期加减')
def echo(date_time):
    print(date_time.strftime('%Y-%m-%d %H:%M:%S'))

from datetime import datetime, timedelta
now = datetime.now()
echo(now)
echo(now + timedelta(hours=10))
echo(now - timedelta(days=1))
echo(now + timedelta(days=2, hours=12))

print('\n=========================named tuple================')
'''
命名tuple：提供了一个机制，用来快速继承tuple创建一些简单的类，如：
我们知道tuple可以表示不变集合，例如，一个点的二维坐标就可以表示成：p = (1, 2)
但是，看到(1, 2)，很难看出这个tuple是用来表示一个坐标的。
定义一个class又小题大做了，这时，namedtuple就派上了用场：
'''
from collections import namedtuple
#下面其实定义了一个类：
Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)
print(p)

#
